package com.zofer.study.funinterface;

/**
 * 函数式接口练习自定义函数式接口(有参有返回值)
 */
public class FuntionInterfaceTest02 {

    //不加 @FunctionalInterface，有且只有一个抽象方法的接口 也是函数式接口
    interface IA{
        public int calc(int a, int b);
    }
    static class Zi implements IA{
        @Override
        public int calc(int a, int b) {
            return a + b;
        }
    }

    public static void main(String[] args) {
        //1.传递子类对象
        print(new Zi());//执行Zi中的加法
        //2.传递匿名内部子类对象
        print(new IA(){
            @Override
            public int calc(int a, int b) {
                return a * b;
            }
        });//执行匿名子类中的"乘法"
        //3.传递Labmda
        print((int x,int y)->{return x - y;});//执行Lambda中的"减法"
    }

    public static void print(IA ia) {
        int result = ia.calc(10, 20);
        System.out.println(result);
    }

}
